package the_third_chapter;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * 计算最大公因数和最小公倍数
 * 先使用辗转相除法求num1和num2的最大公因数，并由N保存，然后根据求最小公倍数的公式A*B/C，计算出num1和num2的最小公倍数
 * 保存在M中。再次使用辗转相除法求N和num3的最大公因数，即求三个数的最大公因数，由变量N保存。
 * 最后使用辗转相除法和求最小公倍数的公式，求出M和num3的最小公倍数，即三数的最小公倍数
 * 
 * @author explorati
 *
 */
public class Number {

	public static void main(String[] args) {
		int num1, num2, num3, N, M;
		String s = "";
		System.out.print("请输入第一个数字：");
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		try {
			s = br.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		num1 = Integer.parseInt(s);

		System.out.print("请输入第二个数字：");
		BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
		try {
			s = br1.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		num2 = Integer.parseInt(s);

		System.out.print("请输入第三个数字：");
		BufferedReader br3 = new BufferedReader(new InputStreamReader(System.in));
		try {
			s = br3.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		num3 = Integer.parseInt(s);

		// 求num1和num2的最大公因数
		int a = num1, b = num2, c = 1;
		while (c != 0) {
			c = a % b;
			if (c != 0) {
				a = b;
				b = c;
			}
		}
		N = b;

		// 求num1和num2的最小公倍数
		M = num1 * num2 / N;

		// 求N和num3的最大公因数，即求num1、num2、num3的最大公因数
		a = N;
		b = num3;
		c = 1;
		while (c != 0) {
			c = a % b;
			if (c != 0) {
				a = b;
				b = c;
			}
		}
		N = b;

		// 求M和num3的最小公倍数，即求num1、num2和num3的最小公倍数
		// a = M;
		// b = num3;
		// c = 1;
		// while (c != 0) {
		// c = a % b;
		// if (c != 0) {
		// a = b;
		// b = c;
		// }
		// }
		// M = M * num3 / b;
		M = M * num3 / N;
		System.out.println("这三个数的最大公因数为：" + N);
		System.out.println("这三个数的最小公倍数为：" + M);
	}
}
